package com.cy.jt;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

@Configuration
public class FeignConfig {
    /**
     * Feign方式调用时的请求拦截器，通过此拦截器拦截到请求数据以后，可以
     * 结合业务对请求数据进行预处理
     * */
    @Bean
    public RequestInterceptor requestInterceptor(){
        return new RequestInterceptor() {
            /**在此方法中可以通过requestTemplate对象向新的请求中写参数*/
            @Override
            public void apply(RequestTemplate requestTemplate) {
                //1、获取原有请求中的数据
                HttpServletRequest request =
                        ((ServletRequestAttributes) RequestContextHolder
                                .getRequestAttributes()).getRequest();
                //2、将原有请求中的数据添加到新的请求中
//                requestTemplate.header();//向请求头添加数据
                //2.1、获取request中的参数
                Map<String, String[]> parameterMap = request.getParameterMap();
                //2.2、输出map中的key
                System.out.println("key:"+parameterMap.keySet());
                //2.3、判断参数中的key是否包含：pangCurrent参数，包含则向新请求中写参数。
                if(parameterMap.containsKey("pangCurrent")) {
                    requestTemplate.query("pageCurrent", request.getParameter("pageCurrent"));
                    requestTemplate.query("pageSize", request.getParameter("pageSize"));
                }
            }
        };
    }
}
